package start.demo01;

public class T5_24 {
    public static void main(String[] args){
        T5_24 t5=new T5_24();
        T5 t=new T5_24().new T5();//非静态内部类
        Inner i=new Inner();//静态内部类
        t5.test(new Test(){//匿名内部类
            public void tt(String s){
                System.out.println("你好:"+s);
            }
        });
        t5.test(s ->System.out.println(s));//内部类在这里实现，但是在test()方法内调用
        String s1="s1";
        String s3=new String("s1");
        String s2="s2";
        s2.intern();//保存这个引用，放入字符串池，当新创建的字面量值相同时，直接得到这个引用
        String s4="s2";
        System.out.println(s1=s2);//输出s2
        System.out.println(s1==s3);//
        System.out.println(s2==s4);//true

        StringBuilder bd=new StringBuilder("welcome");
        bd.append("34");
        bd.deleteCharAt(bd.length()-1);
        /*
        * StringBuilder非线程安全，但是效率更高
        * StringBuffer线程安全
        * */
        //t.get();
    }
    private String s="fsd";
    private static String s1="回复";
    class T5{
        private String s="菲菲";
        public void put(){
            System.out.println(T5_24.this.s);
        }
    }
    public void get(){
        new T5().put();
    }
    static class Inner{
        private static int age=20;
        public void access(){
            System.out.println(s1);
        }
    }
    public void function(){//局部内部类
        class InnerBase{
            int num;
        }
        class InnerSub extends InnerBase{
            int num1;
        }
        InnerSub sub=new InnerSub();
        System.out.println(sub.num);
        System.out.println(sub.num1);
    }
    public void test(Test t){
        t.tt("ds:"+t);
    }
}
@FunctionalInterface
interface Test{
    public void tt(String s);
}
